package cc.autoapi.pucong.auto.flow.provider.log.manager;


import cc.autoapi.pucong.auto.flow.provider.log.entity.ApiInstanceNodeConvert;
import cn.hutool.core.date.DateUtil;
import cc.autoapi.pucong.auto.flow.persistence.po.log.ApiInstanceNodePo;
import cc.autoapi.pucong.auto.flow.persistence.repository.log.ApiInstanceNodeService;
import cc.autoapi.pucong.auto.flow.provider.log.entity.qo.ApiInstanceNodeQo;
import cc.autoapi.pucong.auto.flow.provider.log.entity.vo.ApiInstanceNodeDetailVo;
import cc.autoapi.pucong.auto.flow.provider.log.entity.vo.ApiInstanceNodeVo;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author pucong
 * @description 项目接口实例节点日志 managerService 实现类
 * @create 2024-10-07
 */
@Service
@Slf4j
public class ApiInstanceNodeManager {

    @Resource
    private ApiInstanceNodeService apiInstanceNodeService;

    public List<ApiInstanceNodeVo> getList(ApiInstanceNodeQo qo) {
        List<ApiInstanceNodePo> apiInstanceNodes = apiInstanceNodeService.list(qo.getApiId(), qo.getApiNodeId(), qo.getApiInstanceId());
        List<ApiInstanceNodeVo> apiInstanceNodeVos = ApiInstanceNodeConvert.INSTANCE.po2vos(apiInstanceNodes);
        for (ApiInstanceNodeVo apiInstanceNodeVo : apiInstanceNodeVos) {
            if (apiInstanceNodeVo.getExeStartTime() != null && apiInstanceNodeVo.getExeEndTime() != null) {
                String time = DateUtil.formatBetween(apiInstanceNodeVo.getExeStartTime(), apiInstanceNodeVo.getExeEndTime());
                apiInstanceNodeVo.setExeTime(time);
            }
        }
        return apiInstanceNodeVos;
    }

    public ApiInstanceNodeDetailVo getDetailById(String instancesId, String apiNodeId) {
        ApiInstanceNodePo apiInstanceNode = apiInstanceNodeService.getOne(instancesId, apiNodeId);
        ApiInstanceNodeDetailVo apiInstanceNodeVo = ApiInstanceNodeConvert.INSTANCE.po2Detailvo(apiInstanceNode);
        if (apiInstanceNodeVo.getExeStartTime() != null && apiInstanceNodeVo.getExeEndTime() != null) {
            String time = DateUtil.formatBetween(apiInstanceNodeVo.getExeStartTime(), apiInstanceNodeVo.getExeEndTime());
            apiInstanceNodeVo.setExeTime(time);
        }
        return apiInstanceNodeVo;
    }
}
